

class Utils(object):
    @staticmethod
    def longestCommonSubpath(path1, idx1, path2, idx2):
        """
        从路径path1中第idx1个节点开始，找到与path2[idx2:]最长共同的子路径。
        比如path1=[0,1,2,3,4,5,6,7], idx1=1, path2=[3,4], idx2=0，则最长共同子路径为[3,4]。
        如果path2=[3,5]，则最长共同子路径为[3]。
        """
        if path1 is None or path2 is None:
            return []
            
        subpath = []
        try:
            i = path1.index(path2[idx2], idx1)
        except ValueError:
            return []
        subpath.append(path2[idx2])
        for j in range(i+1, len(path1)):
            if idx2+j-i >= len(path2) or path1[j] != path2[idx2+j-i]:
                break
            subpath.append(path2[idx2+j-i])
        return subpath